#include <httplib.h>
using namespace httplib;

int main()
{
    //创建一个Server对象（httplib库中的）
    Server server;
    //把"./www" 设置成静态资源根目录
    server.set_mount_point("./", "./www");
    //添加 请求-处理函数 映射信息
    server.Get("/hi", [](const Request& req, Response& rsp){
        rsp.body = "Bey";
        rsp.status = 200;//不写默认也是200
    });
    //R"()" C++11用法，其中的字符串无转义特性；
    //正则表达式中\d表示数字，+表示匹配前面格式数据一/多次，()表示单独捕捉数据，/numbers/(\d+)是规定格式
    server.Get(R"(/numbers/(\d+))", [](const Request& req, Response& rsp){
        //matches[0] == /numbers/123 , matches[1] == 123；matches存放正则表达式匹配的规则数据
        std::string num = req.matches[1];//数字
        rsp.set_content(num, "text/plain");//向rsp.body中添加数据，并设置Content_Type内容格式类型
        rsp.status = 200;
    });
    server.Post("/multipart", [](const Request& req, Response& rsp){
        if (req.has_file("file1") == false)//请求对象是否有名为file1的文件
        {
            rsp.status = 400;//表示出错
        }
        MultipartFormData file = req.get_file_value("file1");//获取表单中名为file1的区域的内容
        std::cout << file.filename << std::endl;//文件名称
        std::cout << file.content_type << std::endl;//内容/文件类型
        std::cout << file.content << std::endl;//内容
        rsp.status = 200;//表示请求成功
    });
    server.listen("0.0.0.0", 9090);//监听接收从所有ip发来的目标port为9090的请求

    return 0;
}